using System;
using System.Collections.Generic;
using System.Text;
namespace OPTFleet.OPTFleet {
	public class Veiculo {
        public const int LIGEIRO = 1;
        public const int PESADO  = 3;
        public const int SEMIPESADO = 2;

		private int idveiculo;
		private string matricula;
        private int tipo;
        private DateTime ano;
        private Double largura;
        private Double comprimento;
		private int deposito;
		private Double consumomedio;

        public int IDveiculo
        {
            get { return idveiculo; }
            set { idveiculo = value; }
        }

        public string Matricula
        {
            get { return matricula; }
            set { matricula = value; }
        }

        public int Tipo
        {
            get { return tipo; }
            set { tipo = value; }
        }

        public DateTime Ano
        {
            get { return ano; }
            set { ano = value; }
        }

        public Double Largura
        {
            get { return largura; }
            set { largura = value; }
        }

        public Double Comprimento
        {
            get { return comprimento; }
            set { comprimento = value; }
        }

        public int Deposito
        {
            get { return deposito; }
            set { deposito = value; }
        }

        public Double Consumomedio
        {
            get { return consumomedio; }
            set { consumomedio = value; }
        }

        public Veiculo(){
            idveiculo = 0;
            matricula = "";
            tipo = 0;
            ano = new DateTime();
            largura = 0;
            comprimento = 0;
            deposito = 0;
            consumomedio = 0;
        }

        public Veiculo(int idveiculo, string matricula, int tipo, DateTime ano, Double largura, Double comprimento, int deposito, Double consumomedio){
            this.idveiculo = idveiculo;
            this.matricula = matricula;
            this.tipo = tipo;
            this.ano = ano;
            this.largura = largura;
            this.comprimento = comprimento;
            this.deposito = deposito;
            this.consumomedio = consumomedio;
        }


        public class OrdenarAnoConsumo : IComparer<Veiculo>
        {
            int IComparer<Veiculo>.Compare(Veiculo v1, Veiculo v2)
            {
                if (v1.ano > v2.ano)
                    return -1;
                if (v1.ano < v2.ano)
                    return 1;
                if (v1.consumomedio > v2.consumomedio)
                    return 1;
                if (v1.consumomedio < v2.consumomedio)
                    return -1;
                return 1;
            }
        }

        public override string ToString()
        {
            StringBuilder sb = new StringBuilder();

            sb.Append("------------Veiculo-----------");
            sb.Append("\nIDVeiculo: " + idveiculo);
            sb.Append("\nMatricula: " + matricula);
            sb.Append("\nTipo: " + tipo);
            sb.Append("\nAno: " + ano);
            sb.Append("\nLargura: " + largura);
            sb.Append("\nComprimento: " + comprimento);
            sb.Append("\nDeposito: " + deposito);
            sb.Append("\nConsumo medio: " + consumomedio);
            sb.Append("\n------------------------------");

            return sb.ToString();
        }
	}
}
